namespace Communication
{
    /// <summary>
    /// Contains information about a GSM network operator.
    /// </summary>
    public class OperatorInfo2
    {
        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        /// <param name="status">The operator availability</param>
        /// <param name="longAlphanumeric">The operator name in long alphanumeric format</param>
        /// <param name="shortAlphanumeric">The operator name in short alphanumeric format</param>
        /// <param name="numeric">The operator in numeric format</param>
        /// <remarks>If the phone does not support one of the formats <b>longAlphanumeric</b>,
        /// <b>shortAlphanumeric</b>, <b>numeric</b>, the curresponding string is left empty.</remarks>
        public OperatorInfo2(OperatorStatus status, string longAlphanumeric, string shortAlphanumeric, string numeric)
        {
            Status = status;
            LongAlphanumeric = longAlphanumeric;
            ShortAlphanumeric = shortAlphanumeric;
            Numeric = numeric;
            AccessTechnology = string.Empty;
        }

        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        /// <param name="status">The operator availability</param>
        /// <param name="longAlphanumeric">The operator name in long alphanumeric format</param>
        /// <param name="shortAlphanumeric">The operator name in short alphanumeric format</param>
        /// <param name="numeric">The operator in numeric format</param>
        /// <param name="accessTechnology">The access technology the operator uses.</param>
        /// <remarks>
        /// <para>If the phone does not support one of the formats <b>longAlphanumeric</b>,
        /// <b>shortAlphanumeric</b>, <b>numeric</b>, the curresponding string is left empty.</para>
        /// <para>The <b>accessTechnology</b> is optional, as it is only useful for terminals capable
        /// to register to more than one access technology.</para>
        /// </remarks>
        public OperatorInfo2(OperatorStatus status, string longAlphanumeric, string shortAlphanumeric, string numeric, string accessTechnology)
        {
            Status = status;
            LongAlphanumeric = longAlphanumeric;
            ShortAlphanumeric = shortAlphanumeric;
            Numeric = numeric;
            AccessTechnology = accessTechnology;
        }

        /// <summary>
        /// Gets the access technology the operator uses.
        /// </summary>
        /// <remarks>This is optional, as it is only useful for terminals capable to register to more than
        /// one access technology.</remarks>
        public string AccessTechnology { get; private set; }

        /// <summary>
        /// Gets the operator name in long alphanumeric format.
        /// </summary>
        /// <remarks>If the phone does not support this format, the string will be empty.</remarks>
        public string LongAlphanumeric { get; private set; }

        /// <summary>
        /// Gets the operator in numeric format.
        /// </summary>
        /// <remarks>If the phone does not support this format, the string will be empty.</remarks>
        public string Numeric { get; private set; }

        /// <summary>
        /// Gets the operator name in short alphanumic format.
        /// </summary>
        /// <remarks>If the phone does not support this format, the string will be empty.</remarks>
        public string ShortAlphanumeric { get; private set; }

        /// <summary>
        /// Gets the availability of the operator.
        /// </summary>
        public OperatorStatus Status { get; private set; }
    }
}